package com.zxb.base.generator.service;

import com.zxb.base.generator.vo.ColumnVo;
import com.zxb.core.dao.generator.GenColumn;

import java.util.List;

/**
 * @author Zxb
 */
public interface EngineService {
	/**
	 * 获取字段列表
	 * @param tableName
	 * @return
	 */
	List<GenColumn> findGenColumnByTable(String tableName);

	/**
	 * 获取字段
	 * @param tableName
	 * @param columnName
	 * @return
	 */
	GenColumn findGenColumnByTable(String tableName, String columnName);

	/**
	 * 生成Entity
	 * @param schema
	 * @param tableName
	 */
	void generateEntity(String schema, String tableName);

	/**
	 * 生成Controller
	 * @param schema
	 * @param tableName
	 */
	void generateController(String schema, String tableName);

	/**
	 * 生成Service
	 * @param schema
	 * @param tableName
	 */
	void generateService(String schema, String tableName);

	/**
	 * 生成ServiceImpl
	 * @param schema
	 * @param tableName
	 */
	void generateServiceImpl(String schema, String tableName);

	/**
	 * 生成子表Controller
	 * @param schema
	 * @param tableName
	 * @param parentTableName
	 */
	void generateChildController(String schema, String tableName, String parentTableName);

	/**
	 * 生成树管理代码
	 * @param tableName
	 */
	void generateTreeJava(String tableName);

	/**
	 * 生成主表管理页面
	 * @param schema
	 * @param tableName
	 */
	void generateVue(String schema, String tableName);

	/**
	 * 生成子表管理页面
	 * @param schema
	 * @param tableName
	 */
	void generateChildVue(String schema, String tableName);

	/**
	 * 生成树表管理页面
	 * @param schema
	 * @param tableName
	 */
	void generateTreeVue(String schema, String tableName);

	/**
	 * 是否公共字段
	 * @param name
	 * @return
	 */
	Boolean isPubColumn(String name);
	/**
	 * 初始化表
	 * @param schema
	 * @param tableName
	 * @return
	 */
	List<GenColumn> initTable(String schema, String tableName, List<ColumnVo> colList);
}
